package agencia.test;

import static org.junit.Assert.assertEquals;

import java.util.Collection;
import java.util.Date;
import java.util.LinkedList;

import org.junit.Before;
import org.junit.Test;

import agencia.Hotel;
import agencia.PaqueteEstandar;
import agencia.Pasajero;
import agencia.ReservaDePaquete;
import agencia.ReservaHotelPaquete;
import agencia.Temporada;
import agencia.exceptions.LugarInsuficienteException;


public class CancelarReservaPaquete {
	PaqueteEstandar paqueteEstandar;
	ReservaDePaquete reservaPaquete;	
	Pasajero pasajero1;
	Pasajero pasajero2;
	Date fechaReserva;
	Collection<Pasajero> pasajeros;
	
	//Cancela una reserva y verifica la correcta determinacion del importe a devolver por la reserva
	@Before 
	public void setUp() throws Exception {
		paqueteEstandar = new PaqueteEstandar();
		Date fechaSalida = new Date(2008/12/01);
		fechaReserva = new Date();
		Hotel hotel = new Hotel("Sheraton", "San Juan 3276", "Argentina", "CABA", "4444-5555", 5);
		ReservaHotelPaquete hotelPaquete = new ReservaHotelPaquete();
		paqueteEstandar.determinarCategoria(5);
		paqueteEstandar.determinarCantidadPasajerosMinima(10);
		paqueteEstandar.determinarFecha(fechaSalida);
		paqueteEstandar.determinarTemporada(Temporada.Alta);
		
		hotelPaquete.determinarHotel(hotel);
		hotelPaquete.determinarFechaCheckIn(fechaSalida);
		hotelPaquete.determinarFechaCheckOut(new Date(2008/12/10));
		paqueteEstandar.agregarHotelPaquete(hotelPaquete);
		
		pasajero1 = new Pasajero();
		pasajero2 = new Pasajero();
		pasajeros = new LinkedList<Pasajero>();
		pasajeros.add(pasajero1);
		pasajeros.add(pasajero2);
	}
	
	@Test //(expected=LugarInsuficienteException.class)
	public void testReservarPaqueteStandard() throws LugarInsuficienteException {
		reservaPaquete = new ReservaDePaquete(paqueteEstandar,pasajeros);
		//reservaPaquete.ConfirmarReserva();
		
		double devolucion = reservaPaquete.CancelarReserva();
		
		assertEquals(devolucion, paqueteEstandar.determinarPrecio() * 2 * 0.3 * 0.2);	
						
	}
}
